/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package lin.an.util;

import cn.hutool.core.util.HexUtil;
import cn.hutool.crypto.SmUtil;
import cn.hutool.crypto.symmetric.SM4;
import lombok.extern.slf4j.Slf4j;

/**
 * 加密工具类，使用hutool加密数据
 * @author zhoulinq
 */
@Slf4j
public class CommonCryptogramUtil {

    /** sm4对称密钥 */
    private static final byte[] SM4_KEY = HexUtil.decodeHex("2345456789abcdefefcdab9876596710");;

    /**
     * SM4 加密方法（对称加密）
     * @param str 待加密数据
     * @return 加密后的密文
     */
    public static String doSm4Encrypt(String str) {
        SM4 sm4 = SmUtil.sm4(SM4_KEY);
        return sm4.encryptHex(str);
        // 返回十六进制编码的密文
    }

    /**
     * SM4 解密方法
     * @param str 密文
     * @return 解密后的明文
     */
    public static String doSm4Decrypt(String str) {
        SM4 sm4 = SmUtil.sm4(SM4_KEY);
        return sm4.decryptStr(str);
        // 解密并返回明文
    }

}
